﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using STT.Layer.Connection;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Net;
using System.Text;
using STT.Business;
using STT.Entities;


namespace STT.Admin.UserControls
{
    public partial class ucGuiTinNhan : System.Web.UI.UserControl
    {
        ToolBox tb = new ToolBox();


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                tb.LoadDropDownList2(ddDoiTuongGui, "TbQuyen_SelectAll", "TenQuyen", "MaQuyen");
                tb.AndDDLKieuGui(ddKieuGuiTin);
                plGuiTNDa.Visible = false;
                rbKhoaHoc.Checked = true;
                ddKhoaHoc.Enabled = true;
                ddLopHoc.Enabled = false;
               
                ddKhoaHoc.DataSource = tb.GetDataTableByNguoiTao("TbKhoaHoc_SelectAll", Session["TenDN"].ToString());
                ddKhoaHoc.DataTextField = "TenKhoaHoc";
                ddKhoaHoc.DataValueField = "MaKhoaHoc";
                ddKhoaHoc.DataBind();

                
            }

            LoadTinNhan();
            
        }

        protected void ddKieuGuiTin_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkDoiTuongGui();
        }

        private void checkDoiTuongGui()
        {
            if (ddDoiTuongGui.SelectedValue == "4" || ddDoiTuongGui.SelectedValue == "5" || ddDoiTuongGui.SelectedValue == "6")
            {
                plGuiTNDa.Visible = true;
                if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho một người")
                {
                    labLoaiGui.Text = "Gủi tin nhắn đơn";
                    plGuiChoHV.Visible = true;
                    ddlNguoiNhan.Visible = true;
                    labNguoiNhan.Visible = true;
                }
                else if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho nhiều người")
                {
                    labLoaiGui.Text = "Gủi tin nhắn đa";
                    plGuiChoHV.Visible = true;
                    ddlNguoiNhan.Visible = false;
                    labNguoiNhan.Visible = false;
                }
                else
                {
                    plGuiTNDa.Visible = false;
                }
            }
            else
            {
                plGuiTNDa.Visible = true;
                if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho một người")
                {
                    labLoaiGui.Text = "Gủi tin nhắn đơn";
                    plGuiChoHV.Visible = false;
                    ddlNguoiNhan.Visible = true;
                    labNguoiNhan.Visible = true;
                    tb.LoadDropDownList6(ddlNguoiNhan, "TbTinNhan_GetNumberQL",ddDoiTuongGui.SelectedValue.ToString(), "TenGV", "Sdt");
                }
                else if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho nhiều người")
                {
                    labLoaiGui.Text = "Gủi tin nhắn đa";
                    plGuiChoHV.Visible = false;
                    ddlNguoiNhan.Visible = false;
                    labNguoiNhan.Visible = false;
                }
                else
                {
                    plGuiTNDa.Visible = false;
                }
            }
        }

        private void checkDsGui(){
            if (rbKhoaHoc.Checked == true)
            {
                ddKhoaHoc.Enabled = true;
                ddLopHoc.Enabled = false;
            }
            else if (rbLopHoc.Checked == true)
            {
                ddKhoaHoc.Enabled = true;
                ddLopHoc.Enabled = true;
            }
        }

        protected void rbKhoaHoc_CheckedChanged(object sender, EventArgs e)
        {
            checkDsGui();
        }

        protected void rbLopHoc_CheckedChanged(object sender, EventArgs e)
        {
            checkDsGui();
        }

        protected void ddDoiTuongGui_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkDoiTuongGui();
        }

        protected void ddKhoaHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rbKhoaHoc.Checked == false)
            {
                tb.LoadDropDownList2(ddLopHoc, "TbLop_SelectAll", "TenLop", "MaLop");

            }
            else
            {
                tb.LoadDropDownList7(ddlNguoiNhan, "TbTinNhan_GetNumberHVByKH", ddKhoaHoc.SelectedValue, "MaHV", "Sdt");
                if (ddDoiTuongGui.SelectedValue == "4")
                {
                    if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho một người")
                    {
                        tb.LoadDropDownList7(ddlNguoiNhan, "TbTinNhan_GetNumberHVByKH", ddKhoaHoc.SelectedValue, "MaHV", "Sdt");
                    }
                    else if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho nhiều người")
                    {
                       
                    }
                    else
                    {
                        plGuiTNDa.Visible = false;
                    }
                }
                else if (ddDoiTuongGui.SelectedValue == "5")
                {
                    if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho một người")
                    {
                        tb.LoadDropDownList7(ddlNguoiNhan, "TbTinNhan_GetNumberGVByKH", ddKhoaHoc.SelectedValue, "MaGV", "Sdt");
                    }
                    else if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho nhiều người")
                    {

                    }
                    else
                    {
                        plGuiTNDa.Visible = false;
                    }
                }
                else if (ddDoiTuongGui.SelectedValue == "6")
                {
                    if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho một người")
                    {
                        tb.LoadDropDownList7(ddlNguoiNhan, "TbTinNhan_GetNumberDVByKH", ddKhoaHoc.SelectedValue, "TenDonVi", "Sdt");
                    }
                    else if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho nhiều người")
                    {

                    }
                    else
                    {
                        plGuiTNDa.Visible = false;
                    }
                }
            }
        }

        protected void ddLopHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            tb.LoadDropDownList7(ddlNguoiNhan, "TbTinNhan_GetNumberHVByLop", ddLopHoc.SelectedValue, "MaHV", "Sdt");          
        }

        private void sentSMS(string messages)
        {
            //string regId = "APA91bGPU_Npg99J7bn4o5q9TH-lZYUHAJW-Vmqm3LAZJhst8-krD-rxYOllwggi4SVKex2nx5_q31cu3PQGOsQiJY6lI-e3y5d5qmFbig3ZLwGtFS3_ZaU3iI2dYiIZMRPToT_Pgh8NZrSMexmNQubMItUghXLEeNbipCzd1mRxvF9aqRlc4Qo";
            string regId = "APA91bHq3RmnvoKU3JTpjHrUlLr89Lmn3Ty582IeBvEacTtmlO24gcFAJuYQi3f4JRVJIrSYCHtTU5ybdKkpPBdKakdvIkiHv1pDuL6OvY8AJPcJfmAAHJCH1NC7I2kxyskVosu8m8ditrdcg7iA3VFJ0Bexg4HqFhLKDVzb6reG8eaC9-c3KDI";
            var applicationID = "AIzaSyCe7T971WFhiE9jYYv0xYNlvM9k1obNhkw";
            var SENDER_ID = "255591206207";

            //var value = num[i] + " " + HttpUtility.HtmlDecode(Text1.Text);

            WebRequest tRequest;
            tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
            tRequest.Method = "post";
            tRequest.ContentType = " application/x-www-form-urlencoded;charset=UTF-8";
            tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID));

            tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));

            string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message="
                + messages + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + regId + "";


            Console.WriteLine(postData);
            Byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            tRequest.ContentLength = byteArray.Length;

            Stream dataStream = tRequest.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            WebResponse tResponse = tRequest.GetResponse();

            dataStream = tResponse.GetResponseStream();

            StreamReader tReader = new StreamReader(dataStream);

            String sResponseFromServer = tReader.ReadToEnd();

           // Label3.Text = sResponseFromServer; //printing response from GCM server.
            tReader.Close();
            dataStream.Close();
            tResponse.Close();
        }

        string messages;
        protected void btGui_Click(object sender, EventArgs e)
        {
            
            if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho một người")
            {
                messages=ddlNguoiNhan.SelectedValue.ToString().Trim() + " "+ txtNoiDung.Text;
                sentSMS(messages);
                BTbTinNhan.Insert(new ETbTinNhan
                {
                    TinNhan = txtNoiDung.Text,
                    NguoiNhan = ddlNguoiNhan.SelectedItem.ToString(),
                    NgayGui = DateTime.Today,
                    NguoiGui = "admin"
                });
            }
            else if (ddKieuGuiTin.SelectedItem.Text == "Gủi cho nhiều người")
            {
                
                if (ddDoiTuongGui.SelectedValue == "1" || ddDoiTuongGui.SelectedValue == "2" || ddDoiTuongGui.SelectedValue == "3")
                {
                    using (SqlConnection cn = new SqlConnection(tb.str))
                    {
                        tb.OpenConnection(cn);
                        using (SqlCommand cmd = new SqlCommand("TbTinNhan_GetNumberQL", cn))
                        {
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.Add("@MaQuyen", SqlDbType.Int).Value = Convert.ToInt32(ddDoiTuongGui.SelectedValue);
                            SqlDataReader dr = cmd.ExecuteReader();

                            while (dr.Read())
                            {
                                messages = dr[0].ToString().Trim() + " " + txtNoiDung.Text;
                                sentSMS(messages);
                            }
                            dr.Close();

                            BTbTinNhan.Insert(new ETbTinNhan
                            {
                                TinNhan = txtNoiDung.Text,
                                NguoiNhan = ddDoiTuongGui.SelectedIndex.ToString(),
                                NgayGui = DateTime.Today,
                                NguoiGui = "admin"
                            });
                        }
                        tb.CloseConnection(cn);
                    }
                }
                else if (ddDoiTuongGui.SelectedValue == "4")
                {
                    using (SqlConnection cn = new SqlConnection(tb.str))
                    {
                        tb.OpenConnection(cn);
                        if (rbKhoaHoc.Checked == true)
                        {
                            using (SqlCommand cmd = new SqlCommand("TbTinNhan_GetNumberHVByKH", cn))
                            {
                                cmd.CommandType = CommandType.StoredProcedure;
                                cmd.Parameters.Add("@MaKhoaHoc", SqlDbType.Int).Value = Convert.ToInt32(ddKhoaHoc.SelectedValue);
                                SqlDataReader dr = cmd.ExecuteReader();

                                while (dr.Read())
                                {
                                    messages = dr[0].ToString().Trim() + " " + txtNoiDung.Text;
                                    sentSMS(messages);
                                }
                                dr.Close();

                                BTbTinNhan.Insert(new ETbTinNhan
                                {
                                    TinNhan = txtNoiDung.Text,
                                    NguoiNhan = "Các học viên trong khóa học "+ddKhoaHoc.SelectedIndex.ToString(),
                                    NgayGui = DateTime.Today,
                                    NguoiGui = "admin"
                                });
                            }
                        }
                        else
                        {
                            using (SqlCommand cmd = new SqlCommand("TbTinNhan_GetNumberHVByLop", cn))
                            {
                                cmd.CommandType = CommandType.StoredProcedure;
                                cmd.Parameters.Add("@MaKhoaHoc", SqlDbType.Int).Value = Convert.ToInt32(ddLopHoc.SelectedValue);
                                SqlDataReader dr = cmd.ExecuteReader();
                                while (dr.Read())
                                {
                                    messages = dr[0].ToString().Trim() + " " + txtNoiDung.Text;
                                    sentSMS(messages);
                                }
                                dr.Close();

                                BTbTinNhan.Insert(new ETbTinNhan
                                {
                                    TinNhan = txtNoiDung.Text,
                                    NguoiNhan ="Các học viên trong lớp "+ddLopHoc.SelectedIndex.ToString()+" của khóa "+ ddKhoaHoc.SelectedIndex.ToString(),
                                    NgayGui = DateTime.Today,
                                    NguoiGui = "admin"
                                });
                            }
                        }
                        tb.CloseConnection(cn);
                    }  
                }
                else if (ddDoiTuongGui.SelectedValue == "5")
                {
                    using (SqlConnection cn = new SqlConnection(tb.str))
                    {
                        tb.OpenConnection(cn);
                        using (SqlCommand cmd = new SqlCommand("TbTinNhan_GetNumberGVByKH", cn))
                        {
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.Add("@MaKhoaHoc", SqlDbType.Int).Value = Convert.ToInt32(ddKhoaHoc.SelectedValue);
                            SqlDataReader dr = cmd.ExecuteReader();

                            while (dr.Read())
                            {
                                messages = dr[0].ToString().Trim() + " " + txtNoiDung.Text;
                                sentSMS(messages);
                            }
                            dr.Close();

                            BTbTinNhan.Insert(new ETbTinNhan
                            {
                                TinNhan = txtNoiDung.Text,
                                NguoiNhan = "Các giảng viên dạy khóa học "+ ddKhoaHoc.SelectedIndex.ToString(),
                                NgayGui = DateTime.Today,
                                NguoiGui = "admin"
                            });
                        }
                        tb.CloseConnection(cn);
                    }
                    
                }
                else if (ddDoiTuongGui.SelectedValue == "6")
                {
                    using (SqlConnection cn = new SqlConnection(tb.str))
                    {
                        tb.OpenConnection(cn);
                        using (SqlCommand cmd = new SqlCommand("TbTinNhan_GetNumberDVByKH", cn))
                        {
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.Add("@MaKhoaHoc", SqlDbType.Int).Value = Convert.ToInt32(ddKhoaHoc.SelectedValue);
                            SqlDataReader dr = cmd.ExecuteReader();

                            while (dr.Read())
                            {
                                messages = dr[0].ToString().Trim() + " " + txtNoiDung.Text;
                                sentSMS(messages);
                            }
                            dr.Close();

                            BTbTinNhan.Insert(new ETbTinNhan
                            {
                                TinNhan = txtNoiDung.Text,
                                NguoiNhan = "Các đơn vị có học viên học của khóa " + ddKhoaHoc.SelectedIndex.ToString(),
                                NgayGui = DateTime.Today,
                                NguoiGui = "admin"
                            });
                        }
                        tb.CloseConnection(cn);
                    }
                }
            }
            else
            {
                plGuiTNDa.Visible = false;
            }
        }

        void LoadTinNhan()
        {
            gvTinNhan.AutoGenerateColumns = false;
            gvTinNhan.DataSource = BTbTinNhan.SelectAll();
            gvTinNhan.DataBind();
        }


        void ThongBao(string Loi)
        {
            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Thông báo!", "<script>alert('" + Loi + "')</script>", false);
        }

        protected void gvTinNhan_RowCommand(object sender, GridViewCommandEventArgs e)
        {

        }

        protected void gvTinNhan_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                int MaTN = int.Parse(gvTinNhan.DataKeys[e.RowIndex].Value.ToString());

                BTbTinNhan.Delete(MaTN);
                LoadTinNhan();
                Session["action"] = 3;
            }
            catch
            {
                ThongBao("Dữ liệu liên quan đến lớp học này vẫn tồn tại, vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void lbXoaTat_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvTinNhan.Rows.Count; i++)
                {
                    CheckBox cbChon = (CheckBox)gvTinNhan.Rows[i].Cells[0].FindControl("cbChon");
                    if (cbChon != null && cbChon.Checked)
                    {
                        BTbTinNhan.Delete(int.Parse(gvTinNhan.DataKeys[i].Value.ToString()));
                    }
                }

                LoadTinNhan();
                Session["action"] = 3;
            }
            catch
            {
                ThongBao("Dữ liệu liên quan đến lớp học này vẫn tồn tại, vui lòng kiểm tra lại dữ liệu!");
            }
        }
    }
}